#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>
#include "types.h"

class Block;

class MainWindow : public QWidget
{
    Q_OBJECT

private:
    const int BLOCK_SIZE = 25;  // 单个方块单元的边长
    const int MARGIN = 5;       // 场景边距

    int game_area[AREA_ROW][AREA_COL];  // 场景区域，1表示活动区域、2表示稳定区域、0表示空
    int speed_ms;       // 游戏时钟毫米数
    int game_timer;     // 游戏时钟
    int score;      // 得分
public:
    explicit MainWindow(QWidget *parent = nullptr);

protected:
    void paintEvent(QPaintEvent *event) override;
    void timerEvent(QTimerEvent *event) override;
    void keyPressEvent(QKeyEvent *event) override;

private:
    void initGame();
    void startGame();
    void gameOver();
    void blockMove(Motion motion);
    void clearCompleteLine();
    bool checkGameOver();
private:
    Block* nextBlock;
    Block* currentBlock;
};

#endif // MAINWINDOW_H
